package com.hup.utils.swing.customView.viewTable;


import com.hup.utils.swing.customView.viewTable.ColorCellRenderer.ColorMatcher;

import java.util.ArrayList;
import java.util.List;
import java.util.Vector;

/**
 * 表格行数据接口,用于处理:面向对象的更新行数据,统计行
 *
 * @param <O>
 */
public interface ViewTableRowBo<O extends ViewTableRowBo<O>> {

    ArrayList<TColumnInfo> getColumnInfo();

    /**
     * @param row 已经是modelIndex(convertRowIndexToModel)
     */
    default Boolean isCellEditable(int row, int column, ViewTable<O> table) {
        return null;
    }

    /**
     * 用于更新行数据:{@link ViewTable#updateData(List)}
     *
     * @param index 起始于0
     */
    Vector<Object> castToVector(int index, O data);

    /**
     * 要实现表头统计行,重写此方法
     *
     * @return null-不统计;notNull-有统计,长度可以小于现有的列数
     */
    default Object[] getSummaryTableRow(List<O> lstData) {
        return null;
    }

    /**
     * 获取 被选中行的统计行信息
     *
     * @param selectedRows 长度>=0
     */
    default String getSelectionInfo(int[] selectedRows, ViewTable<O> table) {
        return null;
    }

    default ColorMatcher<O> getRowColorMatcher() {
        return null;
    }

}